The Berkeley Software Distribution (BSD) socket interface has become a de-facto standard network programming interface used to implement Transmission Control Protocol (TCP)/User Datagram Protocol (UDP) based applications. These socket based applications have become essential in today's networking environment. As a result, a network element should be able to handle the situation when one of its processing elements fails and thus, the connections fail.
As a result of the importance of networking, the resiliency of networks has become quite important in the current networking world so as to keep the downtime of routing devices and hosts minimal. A problem, however, is that when a routing device is not operating correctly, or has failed, it can cause instability in a network.
Protocols like Border Gateway Protocol (BGP), LDP, etc. run over TCP. The breakdown and re-establishment of a BGP session and the convergence can take a few minutes, and this creates instability in the whole Internet. Hence it is extremely important that the sessions never go down due to a single-point failure in a network element.
The BSD socket API, however, does not provide an interface for applications to implement socket redundancy. What is needed is a way for the BSD socket interface to provide a mechanism for applications to perform redundancy operations.